/*
 * Copyright (c) 2025 EasyAdmin
 * All rights reserved.
 *
 * This file is part of the [EasAdmin] project.
 * Unauthorized copying of this file, via any medium, is strictly prohibited.
 * Proprietary and confidential.
 *
 * Author: EasyAdmin ( 1073602@qq.com )
 * Website: https://www.xhxiao.com
 */
package com.easy.module.system.service;

import com.easy.framework.database.service.IService;
import com.easy.module.system.entity.SysUser;
import com.easy.module.system.query.SysUserQuery;

import java.util.List;

/**
 * 用户表 Service接口
 *
 * @author EasyAdmin ( 1073602@qq.com )
 * @date 2025-08-19
 */
public interface ISysUserService extends IService<SysUser, SysUserQuery> {

    List<SysUser> queryList(SysUserQuery query);

    /**
     * 新增用户信息
     *
     * @param dto 用户信息
     * @return 结果
     */
    boolean add(SysUser dto);

    /**
     * 修改用户信息
     *
     * @param dto 用户信息
     * @return 结果
     */
    boolean update(SysUser dto);

    /**
     * 批量删除用户信息
     *
     * @param userIds 需要删除的用户信息主键集合
     * @return 结果
     */
    boolean deleteByIds(Long... userIds);

    /**
     * 校验是否允许操作
     *
     * @param userId 用户ID
     */
    void validateAllowed(Long userId);

    /**
     * 校验用户数据范围权限
     *
     * @param userId 用户ID
     */
    void validateDataScope(Long userId);

    /**
     * 通过用户名获取用户信息
     *
     * @param username
     * @return
     */
    SysUser getByUsername(String username);

    /**
     * 修改密码
     * @param userId
     * @param newPassword
     * @return
     */
    boolean updatePassword(Long userId, String newPassword);

    /**
     * 修改状态
     * @param userId
     * @param status
     * @return
     */
    boolean updateStatus(Long userId, Integer status);

}
